iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Mobile Development

IOS的打怪升級之路系列 第 26

鐵人賽第二十六天 天氣API(五) PickerView的設定

  • 分享至 

  • xImage
  •  

說明

PickerView在創建時是空的,我們可以在XIB裡進行設定,以達到目的。/images/emoticon/emoticon08.gif

實作

  1. 在要設定的PickerViewcountor的class中增加 UIPickerViewDataSourceUIPickerViewDelegate
class MainViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
//其他程式
}
  1. 宣告PickerView名稱
@IBOutlet weak var pkvcity: UIPickerView!

3.設定delegate與初始項目

override func viewDidLoad() {
        super.viewDidLoad()
    
        pkvcity.delegate = self
        pkvcity.dataSource = self
       
        pkvcity.selectRow(0, inComponent: 0, animated: false)
        pickerView(pkvcity, didSelectRow: 0, inComponent: 0)
    }

4.設定PickerView要顯示的項目有幾項

//這是天氣API的專案裡的寫法
let cities = ["臺北市", "新北市", "桃園市", "臺中市", "臺南市", "高雄市", "基隆市", "新竹市", "嘉義市", "苗栗縣", "彰化縣", "南投縣", "雲林縣", "嘉義縣", "屏東縣", "宜蘭縣", "花蓮縣", "台東縣", "澎湖縣", "金門縣", "連江縣"]

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return cities.count // 城市數量
    }

5.設定有幾個區塊

func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1 // 只有一個區段
    }

6.設定每一項的名稱

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return cities[row] // 顯示城市名稱
    }

7.設定當PickerView的值改變時觸發動作

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
       //你的程式
    }

結語

透過以上步驟,我們已經成功地在PickerView中顯示了城市列表,並且實現了在選擇不同城市時觸發相應的動作。這些設定能讓我們的應用更加互動,並且方便地取得對應的天氣資料。其實可以進一步優化此PickerView的設計,例如加入搜尋功能或是依照地區分類城市,讓使用者體驗更加順暢,但本文部會涉及此地。/images/emoticon/emoticon75.gif


上一篇
鐵人賽第二十五天 天氣API(四) 請求資料
下一篇
鐵人賽第二十七天 天氣API(六) 設定tableview的顯示與API的完結
系列文
IOS的打怪升級之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言